package adke.models;

import adke.managers.PlayerManager;
import java.util.Vector;

// houd voor een hele game bij wie wie gekilled heeft

public class ScoreTable
{
    private PlayerKillScore[] table;
    
    public ScoreTable()
    {
        Player[] players = PlayerManager.getPlayers();
        
        table = new PlayerKillScore[players.length+1]; // + muur!
        
        int scoreWriter = 0;
        
        for (Player p : players)
        {
            table[scoreWriter] = new PlayerKillScore(p);
            scoreWriter++;
        }
        
        table[scoreWriter] = new PlayerKillScore(new WallPlayer());
    }
    
    // doe net alsof de muur een player is (lui he..)
    private class WallPlayer extends Player
    {
        public String getName()
        {
            // of The Wall ?
            
            return "Wall-e";
        }
    }
    
    // houd een rij bij van een enkele speler
    // houd iedereen bij die door deze speler gekilled is
    private class PlayerKillScore
    {
        private Player player;
        
        // aan de hand hiervan kunnen we uiteindelijk tellen
        private Vector<String> kills;
        
        public PlayerKillScore(Player player)
        {
            this.player = player;
            kills = new Vector();
        }
        
        public void addKill(Player player)
        {
            kills.add(player.getName());
        }
        
        // kijk hovaak deze speler eenbepaald iemand gedood heeft
        public int getKillCount(Player player)
        {
            String playerName = player.getName();
            int count = 0;
            for (String s : kills)
            {
                if (s.equals(playerName))
                    count++;
            }
            return count;
        }
        
        public String getName()
        {
            return player.getName();
        }
    }
    
    // dood door muur
    public void playerDied(Player player)
    {
        // geef de muur een kill
        table[table.length-1].addKill(player);
    }
    
    public void playerKilledPlayer(Player killer, Player victim)
    {
        // zoek de speler killer in de array
        for (PlayerKillScore pks : table)
        {
            if (pks.getName().equals(killer.getName()))
            {
                pks.addKill(victim);
            }
        }
    }
    
    // 
}
